GraphRAG 实现方法:从知识图谱构建到全局推理

传统 RAG 主要解决“局部检索”问题,而 GraphRAG 面向的是全局理解(global sensemaking)任务,例如“数据集中有哪些核心主题?”这类问题无法通过简单向量检索得到答案。

根据论文 From Local to Global: A GraphRAG Approach to Query-Focused Summarization,GraphRAG 通过知识图谱 + 社区层次摘要 + Map-Reduce 推理实现全局问答能力。

本文将完整拆解 GraphRAG 的实现流程、关键算法选择与工程落地方式,并用 Mermaid 绘制核心流程图。


一、GraphRAG 总体架构

GraphRAG 的核心思想:

  1. 使用 LLM 从文本中抽取实体、关系与事实
  2. 构建知识图谱
  3. 对图进行社区划分(层次化)
  4. 为每个社区生成摘要(自底向上)
  5. 查询时对社区摘要进行 Map-Reduce 式推理

论文给出的整体流程如图所示。

GraphRAG 全流程图

flowchart TD

A[Source Documents] --> B[Text Chunking]

B --> C[LLM: Entity & Relation Extraction]
C --> D[Knowledge Graph Construction]

D --> E[Hierarchical Community Detection]

E --> F[Leaf Community Summaries]
F --> G[Higher-Level Summaries]

G --> H[Community Summary Index]

H --> I[Query]
I --> J[Map: Partial Answers from Communities]
J --> K[Reduce: Global Answer]

K --> L[Final Response]

二、第一阶段:构建知识图谱

GraphRAG 的关键创新之一,是用 LLM 构建语义图索引,而不是向量索引

1. 文本切分(Chunking)

源文档首先被拆分为 text chunks。

设计权衡:

论文指出 chunk 大小是一个关键设计参数。


2. 实体与关系抽取

每个 chunk 通过 Prompt 让 LLM 抽取:

论文示例中:

抽取流程图

flowchart LR

A[Text Chunk]
--> B[LLM Prompt: Extract Entities]
--> C[LLM Prompt: Extract Relations]
--> D[LLM Prompt: Extract Claims]
--> E[Structured Triples]

3. 构建知识图谱

抽取结果会:

论文说明:

图结构形式

Node: Entity
Edge: Relationship (weighted)
Attributes: Description, Claims

三、第二阶段:社区划分(Hierarchical Community Detection)

GraphRAG 的核心突破在于:利用图的模块性(modularity)进行分区

论文采用:

社区划分流程

flowchart TD

A[Knowledge Graph]
--> B[Leiden Community Detection]

B --> C1[Community Level 1]
C1 --> C2[Community Level 2]
C2 --> C3[Leaf Communities]

特征:

这一步是 GraphRAG 与传统 RAG 的本质区别。


四、第三阶段:社区摘要生成(Bottom-Up Summarization)

1. 叶子社区摘要

论文策略:

优先级:


2. 高层社区摘要

如果 token 超限:

论文描述为:

自底向上生成层次摘要

层级摘要示意图

flowchart TD

A[Leaf Community A]
B[Leaf Community B]

A --> C[Level 2 Summary]
B --> C

C --> D[Root Summary]

最终形成一个图摘要索引(Graph Summary Index)


五、第四阶段:查询时的 Map-Reduce 推理

这是 GraphRAG 支持全局问题的关键。

论文指出查询过程采用 Map-Reduce 结构。

查询阶段流程

flowchart TD

Q[User Query]

Q --> M1[Community Summary 1]
Q --> M2[Community Summary 2]
Q --> M3[Community Summary N]

M1 --> A1[Partial Answer 1]
M2 --> A2[Partial Answer 2]
M3 --> AN[Partial Answer N]

A1 --> R[Reduce Step]
A2 --> R
AN --> R

R --> Final[Global Answer]

1. Map 阶段


2. Reduce 阶段

这一步使系统具备:


六、与传统 Vector RAG 的对比

维度 Vector RAG GraphRAG
索引方式 向量索引 图索引
适合问题 局部事实 全局主题
是否支持跨社区推理
是否层级结构
推理结构 单阶段 Map-Reduce

论文实验证明:

GraphRAG 在“全局理解问题”上显著优于传统 RAG,在答案多样性与覆盖度上都有提升。


七、工程实现建议

1. 技术栈


2. 关键工程优化点

实体对齐(Entity Matching)

论文使用精确字符串匹配,但允许更复杂对齐策略。

社区层级选择

不同层级适合不同类型问题:

论文对层级选择进行了实验分析。


八、GraphRAG 的本质总结

GraphRAG 并不是简单“图数据库 + RAG”。

它本质上是:

把整个语料库转化为一个可分层压缩的语义图,再通过层次化摘要实现可扩展的全局推理。

关键创新点:

  1. LLM 驱动知识图谱构建
  2. 图的模块性用于主题分区
  3. 层次化社区摘要
  4. Map-Reduce 式问答结构

九、一句话理解 GraphRAG

传统 RAG 是:

找几段最像的问题相关文本

GraphRAG 是:

先理解整个数据集的结构,再基于结构进行全局回答

这使其特别适用于: